iT邦幫忙

2022 iThome 鐵人賽

DAY 16
0
自我挑戰組

冒牌工程師上學去系列 第 16

1-15 檢查碼

  • 分享至 

  • xImage
  •  

同位元

偶同位:傳數個bit時,1的個數要為偶數
奇同位:傳數個bit時,1的個數要為奇數

1. 特色
  • 前面提到的ASCII和EPROM都有使用到這個技術
  • 製作簡單
  • 如果有發生偶數個位元同時出錯那就無法偵錯
2. 以7bit資料+1bit檢查碼為例

https://ithelp.ithome.com.tw/upload/images/20221001/20141684ayEoduaRrx.png


CRC循環冗餘檢查碼

1. 特色
  • 數據通信領域中最常用的一種差錯校驗碼,以多項式做XOR⊕計算為基礎
  • 多項式是代數學中的一種概念,主要用來表示未知數的變數和係數的常數,ex: x⁵+x+1
  • 過程會是由送方將資料經過處理(XOR)後送給收方,送方會在進行校正(XOR)結果為0就是正確,1代表有error code
2. 算法
  • 送方:
    主要有4個重要角色,M(X)、G(X)、R(X)、T(X),可以把他們想成被除數、除數、餘數、要送出的資料
    而這裡的除都是用XOR(相同為0不同為1)來進行相減
    https://ithelp.ithome.com.tw/upload/images/20221001/20141684iufhbQg49p.jpg
    • 步驟
      • 將G(X)多項式轉成位元串,ex: x⁵+x+1 -> 100011
      • M(X)後面加上n個0,n就會是G(X)多項式最高指數,ex: G(X)為x⁵+x+1,那M(X)後面加上5個0
      • M(X)後面加上n個0 除 G(X)位元串會得到R(X)
      • M(X)後面加上n個0 ⊕ R(X)得到T(X),也就是要送出的資料
  • 收方: 拿到T(X)後要進行驗算
    • 步驟
      • T(X) 除 G(X)位元串,餘數為0就是正確,1代表有error code

3. 例子


漢明碼

1. 特色
  • 有更正錯誤的能力
2. 編碼送出步驟
  • 先將資料+漢明碼合併,作法就是先將資料位元列出來,並在資料長度內2ⁿ的位置空出空位給漢明碼
    EX: 一個二進位值為10101111的8 bits位元組,漢明碼位置如下
    https://ithelp.ithome.com.tw/upload/images/20221001/20141684g5XfGykXR0.png
  • 計算漢明碼位置要放的字元,橫軸將漢明碼的bit欄位由大到小排列,然後直欄將bit數為1的欄位對應的位置寫出,並將欄位數字需要哪幾個漢明碼組成出來的字元標上1,以剛剛例子如下圖
    https://ithelp.ithome.com.tw/upload/images/20221001/20141684DsGO526MZ9.png
  • 將剛剛中間紅色字的字元進行偶同位的計算,並將結果放入對應的漢明碼位置
    https://ithelp.ithome.com.tw/upload/images/20221001/20141684JWev6DWIC2.png
  • 填完後的結果即為漢明碼編碼後的送出資料
    https://ithelp.ithome.com.tw/upload/images/20221001/20141684R2sketeHzZ.png
3. 收方驗證步驟
  • 收到資料後先算總共有幾個位元,ex: 一個漢明碼編碼後的收到的值為1101110101
    https://ithelp.ithome.com.tw/upload/images/20221001/20141684VFoVNzsKaq.png

  • 橫軸資料位元長度內2ⁿ的位置由大到小排列,然後直欄將bit數為1的欄位對應的位置寫出,並將欄位數字需要哪幾個橫軸組成出來的位置標上1,並一樣用偶同位算出最下方的值
    https://ithelp.ithome.com.tw/upload/images/20221001/2014168456eOXgHD51.png

  • 如果結果為0表示資料正確,若非為0,將2進制轉回10進制就可以知道是哪個bit出錯
    https://ithelp.ithome.com.tw/upload/images/20221001/201416847uTtm7N8sl.png

https://ithelp.ithome.com.tw/upload/images/20221001/20141684O0Qa4bGS0H.png

分類會依照第一篇介紹的分類架構來進行
由於是將學習過程記錄下來,如果有任何錯誤歡迎糾正

以下參考連結在學習過程中覺得非常有幫助:
-漢明碼
-WIKI
-台大線上課程


上一篇
1-14 文字碼
下一篇
1-16 布林代數
系列文
冒牌工程師上學去42
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言